#include<iostream>
#include<string>
using namespace std;

//bool isletter(char s)
//{
//    if ((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z'))
//    {
//        return true;
//    }
//    return false;
//}
//
//class Solution {
//public:
//    string reverseOnlyLetters(string s) {
//        int left = 0;
//        int right = s.size() - 1;
//        while (left < right)
//        {
//            while (left < right && !isletter(s[left]))
//                left++;
//            while (left < right && !isletter(s[right]))
//                right--;
//            swap(s[left], s[right]);
//            left++;
//            right--;
//        }
//        return s;
//    }
//};
//class Solution {
//public:
//    int firstUniqChar(string s) {
//        int sum[256] = { 0 };
//        for (int i = 0; i < s.size(); i++)
//        {
//            sum[s[i]]++;
//        }
//        for (int i = 0; i < s.size(); i++)
//        {
//            if (sum[s[i]] == 1)
//                return i;
//        }
//        return -1;
//
//    }
//};
//int main()
//{
//    Solution s1;
//    cout << s1.reverseOnlyLetters("a-bC-dEf-ghIj");
//    return 0;
//}


//int main() {
//    string s;
//    getline(cin, s);
//    int ret = s.rfind(' ');
//    cout << s.size() - ret - 1;
//
//    return 0;
//}

bool isletter(char c)
{
    if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
        return true;
    if (c >= '0' && c <= '9')
        return true;
    return false;
}

class Solution {
public:
    bool isPalindrome(string s) {
        int left = 0;
        int right = s.size() - 1;
        while (left < right)
        {
            while (left < right && !isletter(s[left]))
                left++;
            while (left < right && !isletter(s[right]))
                right--;
            if (s[left] >= 'A' && s[left] <= 'Z')
                s[left] += 32;
            if (s[right] >= 'A' && s[right] <= 'Z')
                s[right] += 32;
            if (s[left] != s[right])
                return false;
            left++;
            right--;
        }
        return true;
    }
};

int main()
{
    Solution s1;
    cout << s1.isPalindrome("0P");
    return 0;

}